package torque.menu;

import java.sql.*;
import java.util.*;

import org.apache.torque.NoRowsException;
import org.apache.torque.TooManyRowsException;
import org.apache.torque.Torque;
import org.apache.torque.TorqueException;
import org.apache.torque.util.Criteria;

import torque.generated.*;

public class Menu {

	int pdv1, pdv2;
	public final static String TORQUE_PROPS = new String( "torque-3.3//Torque.properties");
	// Point d'entrée de l'application
	public static void main(String Args[]) throws Exception {
		new Menu();
	}
	public Menu() throws Exception {
		int choix;
		GregorianCalendar datejour = new GregorianCalendar();
		Torque.init(TORQUE_PROPS);

		do {
			System.out.println();
			System.out.println("      **************************************");
			System.out.print("                On est le " + IO.ecrireDate(datejour));
			System.out.println();
			System.out.println("      **************************************");
			System.out.println("      *           Game of Trolls           *");
			System.out.println("      **************************************");
			System.out.println("      * 1- Administrateur                  *");
			System.out.println("      * 2- Joueur                          *");
			System.out.println("      *                                    *");
			System.out.println("      * 0- Quitter                         *");
			System.out.println("      **************************************");
			System.out.println();
			System.out.print("      Votre Choix : ");
			choix = IO.lireEntier();

			switch (choix) {
			case 1: {
//				int mdp;
//				System.out.print("      Mot de passe : ");
//				mdp = IO.lireEntier();
//				if (mdp==147852369)	
					this.menuAdmin();
				//else System.out.println("Mot de passe erroné");
				break;
			}
			case 2: {
				this.menuJoueur();
				break;
			}
			default:
				break;
			}

			System.out.println();
		} while (choix != 0);
	}


	public void menuAdmin() throws Exception {
		int choix;
		// Chargement du driver
		// ---------------------------------------------------------
		try {
			Class.forName("org.postgresql.Driver");
		}// try
		catch (Exception E) {
			System.err.println("Impossible de Charger le driver.");
			return;
		}// catch
		try {
			// Connexion à votre base cinema
			String url = "jdbc:postgresql://postgres-info/base5a08";
			Connection conn = DriverManager.getConnection(url, "user5a08", "p08");
			// Préparation d'une requête
			Statement stmt = conn.createStatement();

			ResultSet rset = null;

			do {
				System.out.println();
				System.out.println("      ******************************************");
				System.out.println("      *           Menu Administrateur          *");
				System.out.println("      ******************************************");
				System.out.println("      * 1- Créer un echiquier                  *");
				System.out.println("      * 2- Créer un troll                      *");
				System.out.println("      * 3- Créer un objet                      *");
				System.out.println("      * 4- Menu suppression                    *");
				System.out.println("      *                                        *");
				System.out.println("      * 0- Retour au menu principal            *");
				System.out.println("      ******************************************");
				System.out.println();
				System.out.print("      Votre Choix : ");
				choix = IO.lireEntier();

				switch (choix) {

				case 1: {
						EchiquierPeer.creerEquichiquier();
					break;
				}
				
				case 2: {
					TrollPeer.creerTroll();					
					break;
				}
				case 3: {

					 ObjetPeer.creerObjet();
					break;
				}

				case 4: {
					menuSuppression();
					break;
				}

				default:
					System.out.println();
					if (rset!=null)
						rset.close();
					stmt.close();
					conn.close();
					break;
				} // switch

			} while (choix != 0);

		} catch (SQLException E) {
			System.err.println("SQLException: " + E.getMessage());
			System.err.println("SQLState:     " + E.getSQLState());
		}// catch
	}


	public void menuJoueur() throws Exception {
		int choix;
		// Chargement du driver
		// ---------------------------------------------------------
		try {
			Class.forName("org.postgresql.Driver");
		}// try
		catch (Exception E) {
			System.err.println("Impossible de Charger le driver.");
			return;
		}// catch
		try {
			 // Connexion à votre base cinema
			String url = "jdbc:postgresql://postgres-info/base5a08";
			 Connection conn = DriverManager.getConnection(url, "user5a08", "p08");
			 // Préparation d'une requête
			 Statement stmt = conn.createStatement();
			 
			 ResultSet rset = null;

			do {
				System.out.println();
				System.out.println("      ******************************************");
				System.out.println("      *               Menu joueur              *");
				System.out.println("      ******************************************");
				System.out.println("      * 1- Créer un troll                      *");
				System.out.println("      * 2- Démarrer une nouvelle partie        *");
				System.out.println("      * 3- Démarrer une ancienne partie        *");
				System.out.println("      *                                        *");
				System.out.println("      * 0- Retour au menu principal            *");
				System.out.println("      ******************************************");
				System.out.println();
				System.out.print("      Votre Choix : ");
				choix = IO.lireEntier();
				
				switch (choix) {
				
					case 1: {
						TrollPeer.creerTroll();					
						break;
					}
					
					case 2: {
						Echiquier e = EchiquierPeer.getEchiquierAleatoire();
						e.demarrerNouvellePartie();
						break;
					}
					
					case 3: {
						Echiquier e = EchiquierPeer.getEchiquierAleatoire();
						e.demarrerAnciennePartie();
						break;
					}
					
				}
				
			} while (choix != 0);
			
		} catch (SQLException E) {
			System.err.println("SQLException: " + E.getMessage());
			System.err.println("SQLState:     " + E.getSQLState());
			
		}
	}
	
	private void menuSuppression() throws NoRowsException, TooManyRowsException, TorqueException {
		// TODO Auto-generated method stub
		int choix;
		// Chargement du driver
		// ---------------------------------------------------------
		try {
			Class.forName("org.postgresql.Driver");
		}// try
		catch (Exception E) {
			System.err.println("Impossible de Charger le driver.");
			return;
		}// catch
		try {
			 // Connexion à votre base cinema
			String url = "jdbc:postgresql://postgres-info/base5a08";
			 Connection conn = DriverManager.getConnection(url, "user5a08", "p08");
			 // Préparation d'une requête
			 Statement stmt = conn.createStatement();
			 
			 ResultSet rset = null;

			do {
				System.out.println();
				System.out.println("      ******************************************");
				System.out.println("      *             Menu supression            *");
				System.out.println("      ******************************************");
				System.out.println("      * 1- Supprimer un échiquier              *");
				System.out.println("      * 2- Supprimer un troll                  *");
				System.out.println("      * 3- Supprimer un equipement             *");
				System.out.println("      * 4- Supprimer une potion                *");
				System.out.println("      *                                        *");
				System.out.println("      * 0- Retour au menu principal            *");
				System.out.println("      ******************************************");
				System.out.println();
				System.out.print("      Votre Choix : ");
				choix = IO.lireEntier();
				
				switch (choix) {
				
//					case 1: {
//						EchiquierPeer.supprimerEchiquier();
//						break;
//					}
					
					case 2: {
					TrollPeer.supprimerTroll();
					break;
					}
				
					case 3: {
					EquipementPeer.supprimerEquipement();
					break;
					}
				
					case 4: {
					PotionPeer.supprimerPotion();
					break;
					}
					
				}
				
			} while (choix != 0);	
		} catch (SQLException E) {
			System.err.println("SQLException: " + E.getMessage());
			System.err.println("SQLState:     " + E.getSQLState());
		}
	}
}
